/*
** ADOBE SYSTEMS INCORPORATED
** Copyright 2012 Adobe Systems Incorporated
** All Rights Reserved.
**
** NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the
** terms of the Adobe license agreement accompanying it.  If you have received this file from a
** source other than Adobe, then your use, modification, or distribution of it requires the prior
** written permission of Adobe.
*/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "VoronoiDiagramGenerator.h"
#include "AS3/AS3.h"

int main(int argc,char **argv) 
{
    int stagewidth, stageheight;
    
    inline_as3(
        "import flash.display.Stage;\n"
        "import flash.display.Graphics;\n"
        "import com.adobe.flascc.CModule;\n"
        "var gfx = CModule.rootSprite.graphics;\n"
        "gfx.lineStyle(1, 0);\n"
        "gfx.beginFill(0, 0.0);\n"
        "%0 = CModule.rootSprite.stage.stageWidth;\n"
        "%1 = CModule.rootSprite.stage.stageHeight;\n"
        : "=r"(stagewidth),"=r"(stageheight) :
    );
        
    const int cellcount = 512;
	float xvals[cellcount], yvals[cellcount];
    for(int i=0; i<cellcount; i++) {
        xvals[i] = stagewidth * ((float)rand()/(float)RAND_MAX);
        yvals[i] = stageheight * ((float)rand()/(float)RAND_MAX);
    }

	VoronoiDiagramGenerator vdg;
	vdg.generateVoronoi(xvals, yvals, cellcount, 0, stagewidth, 0, stageheight, 3);
	vdg.resetIterator();

    float x1,y1,x2,y2;
	while(vdg.getNext(x1,y1,x2,y2))
	{
        inline_as3("gfx.moveTo(%0,%1);\n" : : "r"(x1), "r"(y1));
        inline_as3("gfx.lineTo(%0,%1);\n" : : "r"(x2), "r"(y2));
	}
    inline_as3("gfx.endFill();\n");
}
